在這個 k8s 當道的時代,任何東西都要 container 化,當然我們也稍微介紹一下,如果用 Docker 編譯 golang image 。
首先我們要先準備一個 http api 會回應 Hello World 範例,如有對 docker 不了解的,可以先移步閱讀 Docker -- 從入門到實踐,這樣會比較好了解下面的相關範例。
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/ping", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World")
})
log.Fatal(http.ListenAndServe(":8080", nil))
}
這邊有列出,可以 build golang 的 image,在這邊列出使用 alpine 當作範例,撰寫 dockerfile 如下
FROM golang:1.11.2-alpine
WORKDIR /helloworld
ADD . /helloworld
RUN cd /helloworld && go build
EXPOSE 8080
ENTRYPOINT ./helloworld
再來只要執行 docker 指令就完成了
//這邊是做 image 建立的動作 大家可以把 yourname 取代成自己想要名稱,後面則為你的專案名稱
docker build -t yourname/helloworld .
//這邊就是執行 image 讓他成為 container, --rm 代表執行完接著刪掉 container -p 代表把 cotainer 的 port 對接到你本機的實體 port
docker run --rm -p 8080:8080 -d yourname/helloworld
這時只要用瀏覽器訪問 http://127.0.0.1:8080/ping 就能看到 Hello World
。
整個 golang 的基礎介紹大致上到今天就差不多告一個段落了,剩下兩天的課程,預計會以公司的一些專案架構拿來分享,當然一些敏感的問題,會適當的轉化成比較通俗的應用。